gtk-demo: Improve the scrolling demo
authorMatthias Clasen <mclasen@redhat.com>
Mon, 14 Sep 2020 03:25:05 +0000 (23:25 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 14 Sep 2020 03:43:45 +0000 (23:43 -0400)
Add an fps label to the scrolling demo.

demos/gtk-demo/iconscroll.c
demos/gtk-demo/iconscroll.ui

index 3c05e2755d0297e9f11f1b5d56068c479b0cd318..d7a6c1b5e3ec000c865ecb66558f4f9d742ce21d 100644 (file)
@@ -256,12 +256,38 @@ iconscroll_prev_clicked_cb (GtkButton *source,
   set_widget_type (new_index);
 }
 
+static gboolean
+update_fps (gpointer data)
+{
+  GtkWidget *label = data;
+  GdkFrameClock *frame_clock;
+  double fps;
+  char *str;
+
+  frame_clock = gtk_widget_get_frame_clock (label);
+
+  fps = gdk_frame_clock_get_fps (frame_clock);
+  str = g_strdup_printf ("%.2f fps", fps);
+  gtk_label_set_label (GTK_LABEL (label), str);
+  g_free (str);
+
+  return G_SOURCE_CONTINUE;
+}
+
+static void
+remove_timeout (gpointer data)
+{
+  g_source_remove (GPOINTER_TO_UINT (data));
+}
+
 G_MODULE_EXPORT GtkWidget *
 do_iconscroll (GtkWidget *do_widget)
 {
   if (!window)
     {
       GtkBuilder *builder;
+      GtkWidget *label;
+      guint id;
 
       builder = gtk_builder_new_from_resource ("/iconscroll/iconscroll.ui");
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
@@ -275,6 +301,11 @@ do_iconscroll (GtkWidget *do_widget)
       vadjustment = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "vadjustment"));
       set_widget_type (0);
 
+      label = GTK_WIDGET (gtk_builder_get_object (builder, "fps_label"));
+      id = g_timeout_add (500, update_fps, label);
+      g_object_set_data_full (G_OBJECT (label), "timeout",
+                              GUINT_TO_POINTER (id), remove_timeout);
+
       g_object_unref (builder);
     }
 
index 18e7317dff9506f32266b7191807048e9e217e43..95d2452747fe9f8582c2b854caac6d41b03b8fac 100644 (file)
             </child>
           </object>
         </child>
+        <child type="end">
+          <object class="GtkLabel" id="fps_label">
+            <attributes>
+              <attribute name="font-features" value="tnum=1"/>
+            </attributes>
+          </object>
+        </child>
       </object>
     </child>
     <child>